Q-Learning এবং Deep Q-Network (DQN) হল রিইনফোর্সমেন্ট লার্নিং (Reinforcement Learning - RL) এর দুটি গুরুত্বপূর্ণ কৌশল যা এজেন্টকে পরিবেশের মধ্যে সিদ্ধান্ত গ্রহণ শেখাতে ব্যবহৃত হয়। এখানে আমরা Q-Learning এবং DQN এর ধারণা, কাজের পদ্ধতি এবং পার্থক্য আলোচনা করব।
১. Q-Learning
Q-Learning একটি ভ্যালু-ভিত্তিক রিইনফোর্সমেন্ট লার্নিং অ্যালগরিদম, যা একটি এজেন্টকে একটি পরিবেশে সবচেয়ে ভাল কর্ম (action) নির্বাচন করতে শেখায়। এটি মডেল-ফ্রি (Model-free) এবং অফ-পলিসি (Off-policy) অ্যালগরিদম, অর্থাৎ এজেন্ট পরিবেশ সম্পর্কে কোনো পূর্বধারণা ছাড়াই শিখতে পারে এবং কোন নীতি বা পলিসি অনুসরণ না করেও কাজ করতে পারে।
কাজ করার পদ্ধতি:
Q-ভ্যালু (Q-value):
Q-Learning এর মূল ধারণা হল, একটি নির্দিষ্ট অবস্থায় (state) একটি নির্দিষ্ট কাজ (action) করার জন্য Q-ভ্যালু (Q-value) বের করা। Q-ভ্যালু হল, সেই কাজটি করার ফলে অর্জিত মোট পুরস্কারের (reward) অনুমান।Q-ভ্যালু এর সাধারণ সূত্র:
যেখানে:
- এবং বর্তমান অবস্থান এবং কাজ,
- পরবর্তী পুরস্কার,
- হল লার্নিং রেট (learning rate),
- হল ডিসকাউন্ট ফ্যাক্টর (discount factor),
- পরবর্তী অবস্থায় সবচেয়ে ভাল কাজের Q-ভ্যালু।
- উদ্দেশ্য:
এজেন্টের লক্ষ্য হল তার পলিসি আপডেট করতে, যাতে সে সর্বোচ্চ Q-ভ্যালু অর্জন করতে পারে, এবং পরিবেশে সর্বোচ্চ পুরস্কার পায়। - অফ-পলিসি এবং মডেল-ফ্রি:
- অফ-পলিসি: এজেন্ট যখন তার বর্তমান পলিসি থেকে বিচ্যুত হয়ে অন্য কোনো পলিসি অনুসরণ করে, তখন তা অফ-পলিসি।
- মডেল-ফ্রি: পরিবেশের মডেল ছাড়াই এজেন্ট সিদ্ধান্ত নেয়।
উদাহরণ:
import numpy as np
# Q-টেবিল এবং কিছু প্যারামিটার শুরু করা
Q = np.zeros([states, actions])
learning_rate = 0.1
discount_factor = 0.9
epsilon = 0.1 # epsilon-greedy পলিসি
# কনভার্জেন্সের জন্য লুপ
for episode in range(1000):
state = initial_state
done = False
while not done:
if np.random.rand() < epsilon:
action = np.random.choice(actions) # র্যান্ডম অ্যাকশন
else:
action = np.argmax(Q[state]) # সর্বোচ্চ Q-ভ্যালু অনুযায়ী অ্যাকশন
next_state, reward, done = environment.step(action)
# Q-ভ্যালু আপডেট করা
Q[state, action] = Q[state, action] + learning_rate * (reward + discount_factor * np.max(Q[next_state]) - Q[state, action])
state = next_state
২. Deep Q-Network (DQN)
Deep Q-Network (DQN) হল Q-Learning এর একটি উন্নত সংস্করণ যা ডিপ লার্নিং ব্যবহার করে। এটি Q-ভ্যালু ফাংশন আপডেট করার জন্য নিউরাল নেটওয়ার্ক ব্যবহার করে। DQN মূলত Q-Learning-এর সীমাবদ্ধতা কাটিয়ে ওঠে, যেখানে Q-ভ্যালু টেবিলটি বড় ডেটাসেট বা জটিল পরিবেশে পরিচালনা করা কঠিন হয়। DQN নিউরাল নেটওয়ার্কের মাধ্যমে কনটিনিউয়াস (continuous) এবং হাই ডাইমেনশনাল (high-dimensional) স্পেসে Q-ভ্যালু অনুমান করতে সক্ষম হয়।
DQN এর গুরুত্বপূর্ণ উপাদানসমূহ:
- নিউরাল নেটওয়ার্ক:
- DQN একটি নিউরাল নেটওয়ার্ক ব্যবহার করে Q-ফাংশন আপডেট করে। এই নিউরাল নেটওয়ার্ক চিত্র বা অন্যান্য জটিল ডেটা থেকে বৈশিষ্ট্য শিখতে পারে, যা Q-Learning এর টেবিল-মডেল সীমাবদ্ধতা কাটিয়ে তোলে।
- টাৰ্গেট নেটওয়ার্ক (Target Network):
- DQN এ একটি টাৰ্গেট নেটওয়ার্ক থাকে, যা কিছু সময় অন্তর আপডেট করা হয়, যাতে মডেল প্রশিক্ষণ প্রক্রিয়া স্থিতিশীল থাকে।
- এটি Q-ভ্যালু অনুমানের জন্য একটি স্থির নেটওয়ার্ক ব্যবহার করে এবং পরে কেবল নতুন নেটওয়ার্ককে আপডেট করে।
- অভিজ্ঞতা রিলিভ (Experience Replay):
- DQN অভিজ্ঞতা রিলিভ ব্যবহার করে, যেখানে এজেন্টের পূর্ববর্তী অভিজ্ঞতা সংগ্রহ করা হয় এবং তা এলোমেলোভাবে নির্বাচিত করে প্রশিক্ষণের জন্য ব্যবহৃত হয়।
- এটি বায়াস (bias) কমানোর এবং প্রশিক্ষণ প্রক্রিয়াকে আরও স্থিতিশীল করার জন্য সহায়ক।
DQN এর কাজের পদ্ধতি:
- নিউরাল নেটওয়ার্কের মাধ্যমে Q-ভ্যালু অনুমান:
- নিউরাল নেটওয়ার্কের সাহায্যে বর্তমান অবস্থার জন্য Q-ভ্যালু বের করা হয়।
- অভিজ্ঞতা রিলিভ:
- এজেন্টের অভিজ্ঞতা (state, action, reward, next state) সংগ্রহ করা হয় এবং তা এলোমেলোভাবে প্রশিক্ষণ করতে ব্যবহৃত হয়।
- টার্গেট নেটওয়ার্ক ব্যবহার:
- পরবর্তী Q-ভ্যালু আপডেটের জন্য স্থির টার্গেট নেটওয়ার্ক ব্যবহার করা হয়, যাতে প্রশিক্ষণ প্রক্রিয়া সঠিকভাবে পরিচালিত হয়।
উদাহরণ (DQN পদ্ধতি):
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np
# নিউরাল নেটওয়ার্ক তৈরি
model = Sequential([
Dense(64, input_dim=state_space, activation='relu'),
Dense(64, activation='relu'),
Dense(action_space, activation='linear')
])
# অভিজ্ঞতা রিলিভ তৈরি
replay_memory = []
# DQN প্রশিক্ষণ লুপ
for episode in range(1000):
state = env.reset()
done = False
while not done:
action = model.predict(state) # Q-ভ্যালু অনুমান
next_state, reward, done = env.step(action)
replay_memory.append((state, action, reward, next_state))
# অভিজ্ঞতা রিলিভ থেকে এলোমেলোভাবে ডেটা নির্বাচন
batch = np.random.choice(replay_memory, batch_size=32)
# নিউরাল নেটওয়ার্ক প্রশিক্ষণ
model.fit(batch)
SVM এবং DQN এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Q-Learning | DQN |
|---|---|---|
| প্রকৃতি | টেবিল-বেসড মডেল (ভ্যালু টেবিল) | নিউরাল নেটওয়ার্কের মাধ্যমে Q-ভ্যালু অনুমান |
| ডেটার ধরন | ছোট ডেটাসেট এবং ছোট স্পেসে ভাল কাজ করে | বড় ডেটাসেট এবং উচ্চ ডাইমেনশনাল স্পেসে উপযুক্ত |
| মডেল | মডেল-ফ্রি এবং অফ-পলিসি | মডেল-ফ্রি এবং অফ-পলিসি (ডিপ লার্নিং ভিত্তিক) |
| কার্যকারিতা | দ্রুত এবং সিম্পল সমস্যার জন্য উপযুক্ত | জটিল এবং উচ্চ মাত্রার পরিবেশে উপযুক্ত |
সারাংশ
Q-Learning একটি ভ্যালু-ভিত্তিক অ্যালগরিদম যা পরিবেশে এজেন্টের সিদ্ধান্ত নেওয়ার ক্ষমতা শেখায়, যেখানে DQN হল Q-Learning এর একটি উন্নত সংস্করণ যা ডিপ লার্নিং ব্যবহার করে বড় ডেটাসেট এবং জটিল পরিবেশ
ে Q-ভ্যালু অনুমান করতে সক্ষম। DQN আরও শক্তিশালী এবং স্টেবল সমাধান প্রদান করে, বিশেষ করে যখন ডেটার আকার বৃহৎ এবং স্টেট স্পেস উচ্চ ডাইমেনশনাল হয়ে থাকে।
Read more